/*
 * @Description:
 * @Author: xinqiao lxq1990.0716@qq.com
 * @Date: 2023-10-18
 * @LastEditors: xinqiao lxq1990.0716@qq.com
 * @LastEditTime: 2023-10-18
 */

/**
 * 是否为null 或者 undefined
 * @param value 值
 * @returns true、false
 */
export const validEmpty = <T>(value: T): boolean => {
  if (value === null || value === undefined) return true
  return false
}

/**
 * 校验空对象
 * @param obj 对象
 * @returns
 */
export const validEmptyObject = (obj: Object) => Object.keys(obj).length === 0

/**
 * 校验手机号
 * @param phone 手机号
 */
export const validPhone = (phone: string | number) => {
  return /^(?:(?:\+|00)86)?1[3-9]\d{9}$/.test(phone.toString())
}

/**
  校验身份证号码
  @param {String} idCard 身份证号
  @return {Boolean} 是否校验通过
*/
export const validCard = (idCard: string) => {
  const reg15 = /^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}$/
  const reg18 = /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
  return reg15.test(idCard) || reg18.test(idCard)
}

/**
  校验邮箱
  @param {String} email 邮箱
  @return {Boolean} 是否校验通过
*/
export const validEmail = (email: string) => {
  // if (/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(email)) {
  //   return true
  // }
  if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(email)) {
    return true
  }
  return false
}
